package modelo.persistenciaArquivo;

import modelo.dominio.Funcionario;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;


public class PersistenciaFuncionario {
	//criação da lista de funcionarios
	public static ArrayList<Funcionario> listFuncionarios = new ArrayList<Funcionario>();
	
	//cadastro de funcioanrio
	public void cadastrarFuncionario(Funcionario funcionario) {
		listFuncionarios.add(funcionario);
	}
	
	//lista de funcionarios
	public static ArrayList<Funcionario> getListaFuncionario() {
		return listFuncionarios;
	}
	
	//carregar lista de funcionario
	public boolean carregarFuncionairo(ArrayList<Funcionario> listFuncionarios) throws IOException{
		String nome = "";
		long cpf;
		String endereco = "";
		String telefone = "";
		String cargo = "";
		String linha;
		Funcionario funcionario;
		
		File fp = new File("Funcionarios.txt");
		
		if(!fp.exists()) {
			return false;
		}
		
		BufferedReader br = new BufferedReader(new FileReader(fp));
		
		while((linha = br.readLine())!= null) {
			String[] str = linha.split(";");
			
			cargo = str[0];
			nome = str[1];
			cpf = Long.parseLong(str[2]);
			endereco = str[3];
			telefone = str[4];
			Funcionario novoFuncionario = new Funcionario(cargo,nome, cpf, endereco, telefone);
			cadastrarFuncionario(novoFuncionario);
			
		}
		br.close();
		return true;
	
	}
	
	//salva funcionario em arquivo
	public void salvarFuncionario(ArrayList<Funcionario> listFuncionarios) throws IOException {
		String nome;
		long cpf;
		String telefone;
		String endereco;
		String cargo;
		
		FileWriter fp = new FileWriter(new File("Funcionarios.txt"));
		
		for(int i =0; i < listFuncionarios.size(); i++) {
			nome = listFuncionarios.get(i).getNome();
			cpf = listFuncionarios.get(i).getCpf();
			telefone = listFuncionarios.get(i).getTelefone();
			endereco = listFuncionarios.get(i).getEndereco();
			cargo = listFuncionarios.get(i).getCargo();
			fp.write(nome+";"+ cpf+";"+ telefone+";"+ endereco+";"+ cargo+"\n");
		}
		fp.close();
		
	}
	
	//acrescenta funcionario em arquivo
	public void acrescentarFuncionario(Funcionario funcionario) throws IOException {
		
		BufferedWriter writer = new BufferedWriter(new FileWriter("Funcionarios.txt", true));
		PrintWriter output = new PrintWriter(writer);
		
		output.println(funcionario.getNome() + ";"
		+ funcionario.getCpf()+ ";"
		+ funcionario.getTelefone()+ ";"
		+ funcionario.getEndereco()+ ";"
		+ funcionario.getCargo());
		writer.close();
		output.close();
		
	}
	
}
